#ifndef ARBRE_H
#define ARBRE_H

#include "noeud.h"

class Arbre
{
public:

    // le noeud ancetre de l'arbre
    Noeud * ancetre;
    Noeud * getNoeudAvecIDrec(Noeud * n, unsigned int id);

    static const unsigned int MAXLIGNES = 50;
    // pour connaitre le nombre de noeuds par ligne de l'arbre
    unsigned int compteurNoeudsParLigne[Arbre::MAXLIGNES];

    static void majTypesAncetres(Noeud * pere);

    Arbre();
    ~Arbre();

    /*** getters et setters ***/
    Noeud * getAncetre();
    unsigned int getCompteurPourLigne(int noLig);
    //donne le nombre de noeuds de la ligne la plus large de l'arbre
    unsigned int getNbNoeudsMax();
    // donne le nombre de lignes ou il y a au moins un noeud
    unsigned int getNombreLignes();
    // trouve le noeud d'identifiant id
    Noeud * getNoeudAvecID(unsigned int id);

    int getLargeurMin();
    bool sauvegarde;

    /*** methodes ***/

    Noeud * getNoeudAt(unsigned int noLig, unsigned int noCol);
};

#endif // ARBRE_H
